#if !defined( TREE_KITSCH_H)
#define  TREE_KITSCH_H

// TREE_KITSCH_H
//


#include <vector>
#include <string>

// component headers
#include "progress_indicator.h"
#include "tree.h"
#include "matrix.h"


namespace kitsch_tree
{
	void kitsch_make_tree(	bcpp_tree::t_tree& 				cur_tree,
							const std::vector<std::string>&		names,
							const bcpp_matrix::t_dense_matrix_f&		matrix,
							unsigned							njumble,
							float								power,
							unsigned&							best_jumble,
							float&								sum_sqrs,
							float&								avg_percent_stddev,
							unsigned&							cnt_trees_examined);
	void kitsch_make_tree(	bcpp_tree::t_tree&				cur_tree,
							const std::vector<std::string>&		names,
							const bcpp_matrix::t_dense_matrix_f&		matrix,
							unsigned							njumble,
							float								power,
							unsigned&							best_jumble,
							float&								sum_sqrs,
							float&								avg_percent_stddev,
							unsigned&							cnt_trees_examined,
							t_progress_indicator&				dots);
	void optimize_bcpp_tree(	bcpp_tree::t_tree&				tree,
									const std::vector<std::string>&		names,
									const bcpp_matrix::t_dense_matrix_f&		matrix,
									unsigned							njumble,
									float						 		power,
									unsigned							max_at_a_time,
									unsigned&							best_jumble,
									float&								best_sum_sqrs,
									float&								avg_percent_stddev,
									unsigned&							cnt_trees_examined,
									t_progress_indicator&				dots);
};


#endif
